package dominioEdificio;

import interfaces.Notificable;
import interfaces.Notificador;

public class AireAcondicionado implements Notificador {
	
	private Notificable observador;
	private boolean encendido;
	private int velocidad;
	
	public static int velocidadMaxima = 10;
	public static String aireAcondicionadoEncendido = "Aire acondicionado encendido";
	public static String aireAcondicionadoApagado = "Aire acondicionado apagado";
	public static String velocidadMaximaAlcanzada = "Velocidad maxima";
	
	public AireAcondicionado(){
		this.encendido = false;
		this.velocidad = 0;
	}
	
	public void registrarObservador(Notificable obs) {
		this.observador = obs;
	}
	
	public void encender(){
		if (this.encendido == false){
			this.encendido = true;
			this.velocidad = 1;
			notificar(aireAcondicionadoEncendido);
		}
	}
	
	public void apagar(){
		if (this.encendido == true){
			this.encendido = false;	
			this.velocidad = 0;
			notificar(aireAcondicionadoApagado);
		}
	}

	public void aumentarVelocidad(){
		if (this.encendido) {
			if (this.velocidad < velocidadMaxima) this.velocidad++;
			if (this.velocidad == velocidadMaxima) this.notificar(velocidadMaximaAlcanzada);
		}
	}
	
	public void disminuirVelocidad(){
		if (this.encendido) {
			if (this.velocidad > 0) this.velocidad--;
			if (this.velocidad == 0) {
				this.encendido = false;
				this.notificar(aireAcondicionadoApagado);
			}
		}
	}
	
	public void notificar(String evento) {
		if (this.observador != null) this.observador.notificarMensaje(evento);
	}
}
